
#include "sdkconfig.h"

#ifdef CONFIG_TARGET_ARMV8_AARCH64
// ------------------------------------------------------------
  .global GetAffinity
  //uint32_t GetAffinity(void);
  .type GetAffinity, @function
GetAffinity:
  MRS      x0, MPIDR_EL1
  RET

 
.global ArchSpinLock;
.text;             
ArchSpinLock:                      
    mov     w2, #1
    sevl
1:
    wfe
    ldaxr   w1, [x0]
    cbnz    w1, 1b
    stxr    w1, w2, [x0]
    cbnz    w1, 1b
    ret


.global ArchSpinUnlock;
.text;           
ArchSpinUnlock:
    stlr    xzr, [x0]
    ret

#else

.globl GetAffinity
GetAffinity:
    mrc     p15, #0, r0, c0, c0, #5         @ read multiprocessor affinity register
    bx      lr

#endif